# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
  include TagsHelper

  # retorna las primeras length lentras del string con ... al final si fue cortado
  # si el string es vacio retorna '-'
  def short_string(string, length = 30)
    if !string or string.length==0 then
      return '-'
    elsif string.length <= length then
      return string
    else
      return "#{string[0,length]}..."
    end
  end

  def mail_to(email)
    link_to h(email), :action=>'write_mail', :controller=>'k_mailer', :recipient=>email
  end
  
  def mail_bcc(email)
    link_to h(email), :action=>'write_mail', :controller=>'k_mailer', :bcc=>email
  end
  
  # TODO implemenatar numeros de pagina
  def numeros_paginas_footer(paginator)
    # como meto html aca? tengo que usar todo helper?
  end
  
    #devuelve el numero de alumnos actual
  def nro_alumnos_actual
    Persona.nro_alumnos
  end
  
  # devuelve el numero de matriculas del mes en curso
  def matriculas_este_mes
    Matricula.count_este_mes
  end
  
  # devuelve la efectivdad haciendo matriculas del mes en curso
  def efectividad_matriculas
    (matriculas_este_mes.to_f/visitas_perfil_este_mes.to_f)*100.0
  end
  
  # devuelve las visitas perfil que hubo en el mes en cursos
  def visitas_perfil_este_mes
    @visitas_perfil_este_mes ||= Visita.count_perfil_este_mes
  end
  
  def visitas_fp_este_mes
    @visitas_fp_este_mes ||= Visita.count_fp_este_mes
  end
  
  def visitas_este_mes
    Visita.count_este_mes
  end

  def visitas_del_mes(mes)
    Visita.count(:conditions=>"MONTH(fecha)=#{mes}")
  end
    
  def visitas_perfil_sobre_total  
    visitas_perfil_este_mes.to_f/visitas_este_mes.to_f*100.0
  end    
  
  # Devuelve cuantos alumnos se dieron de baja durante el mes en curso
  def bajas_este_mes
    Persona.count(:all,:joins=>'INNER JOIN evasions ON personas.id=evasions.persona_id',:conditions=>"MONTH(evasions.fecha)=MONTH(CURDATE()) AND YEAR(evasions.fecha)=YEAR(CURDATE())")
  end
  
  # Devuelve el porcentaje de evasion del mes en curso
  def evasion_este_mes
    bajas_este_mes.to_f/(nro_alumnos_actual+bajas_este_mes).to_f*100.0
  end
  
  # Imprime una fecha.
  # Si la fecha es nil imprime '-'
  def prt_date(date_arg)
    return (date_arg)? date_arg.strftime(DATE_FMT) : '-'
  end

  # Imprime una fecha con hora.
  # Si la fecha es nil imprime -
  def prt_date_time(dateTime_arg)
    return (dateTime_arg)? dateTime_arg.strftime(DATETIME_FMT): '-'
  end
end
